/***************************************************************************/
/*                                                                         */
/*  svttcmap.h                                                             */
/*                                                                         */
/*    The FreeType TrueType/sfnt cmap extra information service.           */
/*                                                                         */
/*  Copyright 2003 by                                                      */
/*  Masatake YAMATO, Redhat K.K.                                           */
/*                                                                         */
/*  Copyright 2003, 2008 by                                                */
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
/*                                                                         */
/*  This file is part of the FreeType project, and may only be used,       */
/*  modified, and distributed under the terms of the FreeType project      */
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/***************************************************************************/

/* Development of this service is support of
   Information-technology Promotion Agency, Japan. */

#ifndef __SVTTCMAP_H__
#define __SVTTCMAP_H__

#include FT_INTERNAL_SERVICE_H
#include FT_TRUETYPE_TABLES_H


FT_BEGIN_HEADER


#define FT_SERVICE_ID_TT_CMAP "tt-cmaps"


/*************************************************************************/
/*                                                                       */
/* <Struct>                                                              */
/*    TT_CMapInfo                                                        */
/*                                                                       */
/* <Description>                                                         */
/*    A structure used to store TrueType/sfnt specific cmap information  */
/*    which is not covered by the generic @FT_CharMap structure.  This   */
/*    structure can be accessed with the @FT_Get_TT_CMap_Info function.  */
/*                                                                       */
/* <Fields>                                                              */
/*    language ::                                                        */
/*      The language ID used in Mac fonts.  Definitions of values are in */
/*      freetype/ttnameid.h.                                             */
/*                                                                       */
/*    format ::                                                          */
/*      The cmap format.  OpenType 1.5 defines the formats 0 (byte       */
/*      encoding table), 2~(high-byte mapping through table), 4~(segment */
/*      mapping to delta values), 6~(trimmed table mapping), 8~(mixed    */
/*      16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented   */
/*      coverage), and 14 (Unicode Variation Sequences).                 */
/*                                                                       */
typedef struct  TT_CMapInfo_
{
    FT_ULong language;
    FT_Long format;

} TT_CMapInfo;


typedef FT_Error
(*TT_CMap_Info_GetFunc)(FT_CharMap charmap,
                        TT_CMapInfo* cmap_info);


FT_DEFINE_SERVICE(TTCMaps)
{
    TT_CMap_Info_GetFunc get_cmap_info;
};

#ifndef FT_CONFIG_OPTION_PIC

    #define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_) \
    static const FT_Service_TTCMapsRec class_ = \
    { \
        get_cmap_info_ \
    };

#else /* FT_CONFIG_OPTION_PIC */

    #define FT_DEFINE_SERVICE_TTCMAPSREC(class_, get_cmap_info_) \
    void \
    FT_Init_Class_##class_(FT_Library library, \
                           FT_Service_TTCMapsRec * clazz) \
    { \
        FT_UNUSED(library); \
        clazz->get_cmap_info = get_cmap_info_; \
    }

#endif /* FT_CONFIG_OPTION_PIC */

/* */


FT_END_HEADER

#endif /* __SVTTCMAP_H__ */


/* END */